﻿using BenCaoXuan.Infrastructure.Attr;
using BenCaoXuan.Infrastructure.Dto;
using BenCaoXuan.Infrastructure.Dto.Admin.employee;
using BenCaoXuan.Infrastructure.Dto.Admin.System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BenCaoXuan.Service.Interface.admin
{
    [Provider_]
    public interface I_Sys_Service
    {
        /// <summary>
        /// 新增字典
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Children_Dictionary(AddChildrenDictionary_Dto dto);

        /// <summary>
        /// 新增部门
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Dept(AddDept_Dto dto);

        /// <summary>
        /// 新增员工
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Employee(AddEmployee_Dto dto);

        /// <summary>
        /// 新增岗位
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Post(AddPost_Dto dto);

        /// <summary>
        /// 修改字典的状态
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> ChangeIsBan_Dictionary(IsBan_Dto dto);

        /// <summary>
        /// 切换员工的账号状态
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> ChangeIsBan_Employee(IsBan_Dto dto);
        /// <summary>
        /// 切换状态
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> ChangeIsBan_Post(IsBan_Dto dto);

        /// <summary>
        /// 删除部门
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Delete_Dept(Delete_Dto dto);

        /// <summary>
        /// 删除字典
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Delete_Dictionary(Delete_Dto dto);

        /// <summary>
        /// 删除员工
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Delete_Employee(Delete_Dto dto);

        /// <summary>
        /// 删除岗位
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Delete_Post(Delete_Dto dto);

        /// <summary>
        /// 获取所有岗位
        /// </summary>
        /// <param name="fenye_Dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_AllPost(Fenye_Dto fenye_Dto);

        /// <summary>
        /// 获取子级字典列表
        /// </summary>
        /// <param name="fenye_Dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Children_Dictionary(Fenye_Dto fenye_Dto);

        /// <summary>
        /// 获取所有的部门
        /// </summary>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Department();

        /// <summary>
        /// 获取部门下所有的岗位
        /// </summary>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_DeptPost(string id);

        /// <summary>
        /// 获取部门下的员工
        /// </summary>
        /// <param name="fenye_Dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dept_Employee(Fenye_Dto fenye_Dto);

        /// <summary>
        /// 获取部门下可选的岗位
        /// </summary>
        /// <param name="lv"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dept_Post(string? lv);

        /// <summary>
        /// 获取所有的字典数据
        /// </summary>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dictionary();

        /// <summary>
        /// 获取需要的字典
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_DictionaryByType(string? key);

        /// <summary>
        /// 获取菜单
        /// </summary>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Menu();

        /// <summary>
        /// 获取岗位下的人员
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Post_Employee(Fenye_Dto dto);

     
        /// <summary>
        /// 修改字典
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Update_Dictionary(UpdateDictionary_Dto dto);

        /// <summary>
        /// 编辑员工
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Update_Employee(UpdateEmployee_Dto dto);
    }
}
